知道什麼是 QA,測試在軟體開發流程的位置,以及可以幫助整個專案是什麼。藉由了解 QA 一角,可以實現在軟體開發流程上,讓品質上升。
當談到 QA(品質保證,Quality Assurance)時,通常需要區分 QA、QC(品質控制)和測試這三個相關名詞。首先,瞭解這些名詞的意義和功能是理解 QA 的第一步。
QA(Quality Assurance,品質保證):QA 的目的是確保軟體開發流程和執行符合需求,以解決問題並提高品質為目的。QA 主要關注過程與程序,而不是著重於執行測試。它強調整體流程的合規性和完整性,並涵蓋整個系統範圍。
QC(Quality Control,品質控制):QC 是確認軟體開發遵循文件和規格,以確保最終結果符合預期。QC 主要關注實際測試,通過執行測試用例來識別錯誤和缺陷。它強調實際測試的執行和結果。
Testing(測試):測試是 QA 和 QC 的一部分,但它專注於實際執行測試活動,確保軟體達到預期的品質標準。測試包括各種測試類型,如功能測試、性能測試、安全測試等。
因此,QA 的功能不僅僅是執行測試,更重要的是確保整個軟體開發過程符合品質標準,提高軟體的可靠性、效能、安全性,並滿足用戶的期望。QA 也可能參與建立標準和流程,以確保品質保證的實施。這強調了QA的宏觀角色,並提供了全面的品質保證。
在軟體開發中,我們經常聽到關於軟體的可用性和品質的討論,但實際上,在創建一個能夠正常運行的程式之前,我們必須首先確保它真的「運作」。其他方面可能會變得不太重要,而「測試」通常被認為是較次要的事情。
作為軟體工程師,我們負責開發程式,以確保其能夠執行所需的功能並解決問題。然而,我們不希望這些功能變得不穩定,導致程式不時出現錯誤,需要緊急修復。工程師希望提供高品質的程式碼,這不僅使使用者能夠順利使用,還可以減少我們自己不斷維護程式的工作量。這樣,我們可以在休息的時候真正放鬆,不必隨時擔心接到緊急修復的電話。為了確保我們的程式能夠正常運行,我們需要進行程式碼驗證,這就是所謂的「測試」,而其中的一種常見的測試為單元測試。
當程式碼變得越來越複雜時,我們需要進行更多不同類型的測試,不僅僅是軟體功能的測試,還包括模擬用戶的操作、測試與其他系統的互動以及評估程式的性能和穩定性等等。測試的需求變得越來越多,並變得更加複雜。在這種情況下,優秀的工程師們開始開發出各種測試相關的程式和工具,進一步發展成了測試工程師等相關的職位。如今 QA 相關工程師在注重品質的團隊中,是不可或缺的一部份。
在 tutorialspoint 針對軟體測試中的一篇文章 〈Software Testing - QA, QC & Testing〉提到, QA 是:
Focuses on processes and procedures rather than conducting actual testing on the system.
QA 會專注在流程與原則中,著重於整個系統的流程與完整程度,也就是涵蓋全系統範圍。
而 QC 為 Quality Control,是確認軟體開發是符合文件的發展與內容,確保產生的結果符合預期。也就是:
Focuses on actual testing by executing the software with an aim to identify bug/defect through implementation of procedures and process.